
#include "main.h"
#include "lvgl_project.h"

/******************************************************************************************************
GSM_Wheather_S3 ESP32S3代码仓库，使用ESP32官方esp-idf-v5.0开发，需要安装相关开发环境。
视频演示地址：https://www.bilibili.com/video/BV1VU4y1v7VD?vd_source=2847f5d974d73d579ce40eb1213b09ff
字库UI设计开源地址:https://gitee.com/gsm-wheather-project/gsm-weather-s3-comprehensive-information
硬件开源地址：https://oshwhub.com/yeshengchengxuyuan/b4b67ab1e8234aeebea054b4eda6f549
软件开源地址：https://gitee.com/gsm-wheather-project

食用过程中有疑问可以通过下面联系方式与我联系:
微信:GM8988
QQ:1063503277
QQ交流群:709259833
********************************************************************************************************/



static void init_task_handler(void *pvParameters)
{
	main_debug("-------------开始初始化----------------\r\n");
	main_debug("编译时间:%s %s\r\n", __DATE__, __TIME__);
	main_debug("esp32 sdk version :%s\r\n", esp_get_idf_version());

	bsp_key_init();

#if 0 //测试用
	gpio_set_direction(IO_POWER_PIN, GPIO_MODE_OUTPUT);
	gpio_set_direction(IO_LCD_BL_PIN, GPIO_MODE_OUTPUT);
	gpio_set_level(IO_LCD_BL_PIN, 0);

	uint32_t key_press_count=0;
	while(1)
	{
		main_debug("开机计数:%d",key_press_count);
		bsp_power_off();
		if(bsp_key_read_power_gpio())
		{
			if(++key_press_count > 5)
			{
				main_debug("按键开机");
				break;
			}
		}else
		{
			main_debug("进入休眠");
			gpio_set_level(IO_POWER_PIN, 1);
			bsp_power_sleep();
			key_press_count = 0;
		}

		vTaskDelay(pdMS_TO_TICKS(100));
	}
#endif

	bsp_power_init();
    system_data.spiffs_sta = my_spiffs_init();
	system_data.sd_sta = bsp_sd_init();
	system_data.nvs_sta = nvs_init();
	system_data.wm8978_sta = WM8978_Init();
	bsp_ledc_init();
	system_init();

	//font_init();//使用SD卡中字库，由于太卡暂时放弃



	bsp_i2s_init();
	i2s_test();
	// while (1)
	// {
	// 	//printf_memory();
	// 	vTaskDelay(1000 / portTICK_PERIOD_MS);
	// }

	i2c2_init();
	cst816t_init();
    lcd_init(SPI3_HOST, 80000000);
    lvgl_init();
	lv_port_fs_init();
	lvgl_YangShi_create();
    lvgl_desktop_create(lv_scr_act());


	bsp_ledc_set_duty(5);
	bsp_power_on();

	wifi_init();

    //lvgl_clock_create(lv_scr_act());

	//lv_demo_stress();
	//lv_demo_printer();
	//lv_demo_music();
	//lv_demo_widgets();

	main_debug("初始化结束\r\n");

	while(1)
	{
		// if(system_data.set_connect_wifi_flag == true)
		// {
		// 	lvgl_hint_create(lv_scr_act(),"系统将重启连接新的wifi",200,20);
		// 	vTaskDelay(1000 / portTICK_PERIOD_MS);
		// 	vTaskDelay(1000 / portTICK_PERIOD_MS);
		// 	vTaskDelay(1000 / portTICK_PERIOD_MS);
		// 	vTaskDelay(1000 / portTICK_PERIOD_MS);
		// 	bsp_ledc_set_duty(0);
		// 	esp_restart();
		// }
		vTaskDelay(100 / portTICK_PERIOD_MS);
	}

	vTaskDelete(NULL);

}
void app_main()
{

  xTaskCreate(init_task_handler,
              "init_task_handler",
              1024 * 10,
              NULL,
              configMAX_PRIORITIES-1,
              NULL);
}

void ptintf_memory(char *file,int len)
{
    int free_size;

    ESP_LOGW("内存监控", "%s:%d",file,len);
    free_size = heap_caps_get_free_size(MALLOC_CAP_INTERNAL);
    printf("内部RAM剩余%d.%dKB  ", free_size/1024,free_size%1024);
    free_size = heap_caps_get_free_size(MALLOC_CAP_SPIRAM);
    printf("外部PSRAM剩余%d.%dkB\r\n",free_size/1024,free_size%1024);
}
